package com.ruoyi.questionnaire.service;

import java.util.List;

import com.ruoyi.questionnaire.domain.QuestionnaireQuestion;

/**
 * 问卷题目服务接口
 * 
 * 提供问卷题目相关的业务逻辑操作
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public interface IQuestionnaireQuestionService {
    
    /**
     * 根据ID查询问卷题目
     * 
     * @param id 题目ID
     * @return 题目对象
     */
    QuestionnaireQuestion selectQuestionnaireQuestionById(Long id);
    
    /**
     * 根据问卷ID查询题目列表
     * 
     * @param questionnaireId 问卷ID
     * @return 题目列表
     */
    List<QuestionnaireQuestion> selectQuestionnaireQuestionList(Long questionnaireId);
    
    /**
     * 查询所有问卷题目列表（包含问卷标题信息）
     * 
     * @return 题目列表
     */
    List<QuestionnaireQuestion> selectAllQuestionnaireQuestionList();
    
    /**
     * 新增问卷题目
     * 
     * @param question 题目对象
     * @return 影响行数
     */
    int insertQuestionnaireQuestion(QuestionnaireQuestion question);
    
    /**
     * 更新问卷题目
     * 
     * @param question 题目对象
     * @return 影响行数
     */
    int updateQuestionnaireQuestion(QuestionnaireQuestion question);
    
    /**
     * 根据ID删除问卷题目
     * 
     * @param id 题目ID
     * @return 影响行数
     */
    int deleteQuestionnaireQuestionById(Long id);
    
    /**
     * 批量删除问卷题目
     * 
     * @param ids 题目ID数组
     * @return 影响行数
     */
    int deleteQuestionnaireQuestionByIds(Long[] ids);
    
    /**
     * 根据问卷ID删除所有题目
     * 
     * @param questionnaireId 问卷ID
     * @return 影响行数
     */
    int deleteQuestionnaireQuestionByQuestionnaireId(Long questionnaireId);
    
    /**
     * 获取指定问卷下的最大排序号
     * 
     * @param questionnaireId 问卷ID
     * @return 最大排序号，如果没有题目则返回0
     */
    Integer getMaxOrderNumByQuestionnaireId(Long questionnaireId);
    
    /**
     * 根据题目ID加载选项数据
     * 
     * @param questionId 题目ID
     * @return 题目对象（包含选项数据）
     */
    QuestionnaireQuestion loadQuestionWithOptions(Long questionId);
} 